package com.nuoniu.sibanyun.service.erp;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.bo.UsedGradeRuleBo;
import com.nuoniu.sibanyun.entity.dto.ErpAccountingDto;
import com.nuoniu.sibanyun.entity.dto.ErpAccountingSearchDto;
import com.nuoniu.sibanyun.entity.erp.ErpAccounting;
import com.nuoniu.sibanyun.entity.vo.ErpAccountingVo;
import com.nuoniu.sibanyun.userThread.UserInfo;

import java.util.List;

/**
 * <p>
 * 会计科目表 服务类
 * </p>
 *
 * @author baiqiang
 * @since 2020-09-25
 */
public interface IErpAccountingService extends IService<ErpAccounting> {


    /**
     * 分页查询
     * @param page
     * @param erpAccountingSearchDto
     * @return
     */
    Page<ErpAccountingVo> page(Page page,ErpAccountingSearchDto erpAccountingSearchDto);

    /**
     * 获取 父级ID查询 下级科目
     * @param parentId
     * @return
     */
    List<ErpAccountingVo> listErpAccountingByParentId(Integer parentId);

    /**
     * 通过 会计科目分类Id 第一级获取会计科目
     * @param typeId
     * @return
     */
    List<ErpAccountingVo> listFirstLevelErpAccountingByTypeId(Integer typeId);

    /**
     * 获取当前租户 所有的会计科目
     * @return
     */
    List<ErpAccountingVo> listCurrentAll();

    /**
     * 新增或者编辑
     * @param erpAccountingDto
     */
    void saveOrUpdateOne(ErpAccountingDto erpAccountingDto);



    /**
     * 获取 科目信息
     * @param code
     * @return
     */
    ErpAccounting getOneByCode(String code);

    /**
     * 通过 分类、上级ID、名称查询科目
     * @param name
     * @param parentId
     * @param typeId
     * @return
     */
    ErpAccounting getOneByName(String name,Integer parentId,Integer typeId);

    /**
     * 删除 科目
     * @param ids
     */
    void batchDeleteByIds(Long id);

    /**
     * 获取 科目
     * @return
     */
    ErpAccounting getOneByCondition(Integer actionType,Long currentId);

    /**
     * 初始化科目
     * @author 小啊刚
     * @date 2021-04-19
     */
     void initData(UserInfo userInfo, Integer accountId);

    Integer getByCurrency(Long id);

    /**
     * 获取所有上级科目
     * @author 小啊刚
     * @date 2021-04-27
     */
    List<ErpAccounting> getByParentIds(String parentIds);
}
